package 哈希表;

// 创建 HashTable 管理多条链表
public class HashTable {
    // 盛放链表的数组,即哈希表
    EmpLikedList[] EmpLikedListArr;
    public int capacity;

    // 构造器,制定链表数量
    public HashTable(int capacity){
        this.capacity = capacity;
        EmpLikedListArr = new EmpLikedList[capacity];
        // 初始化一把,不然直接报空指针异常
        for (int i = 0; i < capacity; i++) {
            EmpLikedListArr[i] = new EmpLikedList();
        }
    }

    // 添加
    public void add(Emp emp){
        // 根据员工id确定员工应该在哪个链表
        EmpLikedListArr[HashFunction(emp.id)].add(emp);
    }

    // 遍历所有的链表
    public void list(){
        int count = 0;
        while (count < capacity) {
            EmpLikedListArr[count].list(count);
            count++;
        }
    }

    // 根据Id查找对应的雇员
    public void findEmp(int id){
        int count = HashFunction(id);
        Emp emp = EmpLikedListArr[count].findEmp(id);
        if(emp == null){
            System.out.println("没有找到该雇员");
        }else{
            System.out.println("找到了该雇员,在第"+count+"条链表中"+"id = "+id);
        }
    }



    // 散列函数 取模法
    public int HashFunction(int no){
        return no%capacity;
    }

    /*
    * add
    * list
    * del
    * find
    * 散列函数 决定id对应哪个数组
    * */



}
